package de.hska.artikelverwaltung;

import static de.hska.util.EjbConstants.PERSISTENCE_CONTEXT_HSKA;

import java.util.List;

import javax.annotation.PreDestroy;
import javax.ejb.EJB;
import javax.ejb.Local;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import de.hska.artikelverwaltung.db.Artikel;
import de.hska.artikelverwaltung.db.ArtikelverwaltungDao;
import de.hska.util.MessagesUtil;


@Stateless
@Local(Artikelverwaltung.class)
public class ArtikelverwaltungBean implements Artikelverwaltung {
	public static final Log LOG = LogFactory.getLog(ArtikelverwaltungBean.class);
	private static final boolean DEBUG = LOG.isDebugEnabled();
	
	@SuppressWarnings("unused")
	@PersistenceContext(name=PERSISTENCE_CONTEXT_HSKA)
	private EntityManager em;
	
	@EJB
	private ArtikelverwaltungDao dao;
	
	@SuppressWarnings("unused")
	@PreDestroy
	private void preDestroy() {
		if (DEBUG) {
			final String msg = MessagesUtil.getMessage("log.ejbDeleted", ArtikelverwaltungBean.class.getSimpleName());
			LOG.debug(msg);
		}
	}
	
	/**
	 * {@inheritDoc}
	 */
	public List<Artikel> findVerfuegbareArtikel() {
		final List<Artikel> artikel = dao.findVerfuegbareArtikel();
		return artikel;
	}

	/**
	 * {@inheritDoc}
	 */
	public void aussondern(List<Artikel> auszusonderndeArtikel) {
		for (Artikel artikel: auszusonderndeArtikel) {
			artikel.setAusgesondert(true);
		}
		
		dao.updateArtikel(auszusonderndeArtikel);
	}
}
